﻿package 
{
	import flash.events.MouseEvent;

	public class Puzzle extends Jokua
	{
		
		public function Puzzle()
		{
			izena="Puzzle";
			haur = true;
			objetuakPantailaratu(irudiaAukeratu());
		}

		//bokal bat ausaz aukeratuko da
		private function irudiaAukeratu():String
		{
			var bokalak:Zerrenda = new Zerrenda();
			bokalak.hasieratu(["A","E","I","O","U"]);
			bokalak.nahastu();
			return bokalak.getElementua(0);
		}

		private function objetuakPantailaratu(bokala:String)
		{
			var irudia:Irudia;
			var i:int;

			irudia = new Irudia("irudiak/puzzle/" + bokala + "0.png");
			irudia.name = "0";
			irudia.x = 100;
			irudia.y = 100;
			addChild(irudia);

			piezakPantailaratu(bokala);
			
		}
		
		private function piezakPantailaratu(bokala:String){
			var zenbakiak:Zerrenda=new Zerrenda();
			zenbakiak.hasieratu(["1","2","3","4"]);
			zenbakiak.nahastu();
			
			for (var i:int =1; i<= 4; i++)
			{
				var pieza:Irudia = new Irudia("irudiak/puzzle/" + bokala + zenbakiak.getElementua(i-1) + ".png");
				pieza.setIzena( zenbakiak.getElementua(i-1)); //zenbakiak izen moduan erabiliko dira
				pieza.x = 650;
				pieza.y = i * 130 - 80;
				addChild(pieza);
				pieza.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);
				pieza.addEventListener(MouseEvent.MOUSE_UP, stopDragging);
			}
		}

		private function startDragging(event:MouseEvent)
		{
			event.target.startDrag();
		}

		private function stopDragging(event:MouseEvent)
		{
			event.target.stopDrag();
			kokatu(event.target);
			if (zuzenak ==4){
				super.irabaziMezuaErakutsi();
			}
		}

		//pieza jarri behar den tokitik hurbil badago bere lekuan jarriko da.
		private function kokatu(o : Object){
		
			//objetuaren izena, hau da, 1-4 dauden piezak
			switch (o.name) 
			{
				case "1" :				
					if ( (o.x>65) && (o.x<125) && (o.y>65) && (o.y<125) ){
						o.x = 87;
						o.y = 89;
						o.removeEventListener(MouseEvent.MOUSE_DOWN, startDragging);
						o.removeEventListener(MouseEvent.MOUSE_UP, stopDragging);
						zuzenak++;
					}
					
					break;
				case "2" :
					if ( (o.x>207) && (o.x<257) && (o.y>65) && (o.y<125) ){
						o.x = 220;
						o.y = 95;
						o.removeEventListener(MouseEvent.MOUSE_DOWN, startDragging);
						o.removeEventListener(MouseEvent.MOUSE_UP, stopDragging);
						zuzenak++;
					}
					
					break;
				case "3" :
					if ( (o.x>65) && (o.x<125) && (o.y>168) && (o.y<228) ){
						o.x = 81;
						o.y = 191;
						o.removeEventListener(MouseEvent.MOUSE_DOWN, startDragging);
						o.removeEventListener(MouseEvent.MOUSE_UP, stopDragging);
						zuzenak++;
					}
					break;
				case "4" :
					if ( (o.x>164) && (o.x<224) && (o.y>209) && (o.y<269) ){
						o.x = 183;
						o.y = 225;
						o.removeEventListener(MouseEvent.MOUSE_DOWN, startDragging);
						o.removeEventListener(MouseEvent.MOUSE_UP, stopDragging);
						zuzenak++;
					}
					break;
			}//switch

		}//kokatu

	}

}